import COMMON from './common.js'
import utils from './utils.js'
var log = uni.requireNativePlugin("LogModule")
/**
 * 自动升级，每次打包时，需要修改manifest.json中的versionName、versionCode（版本号）以及Android中的build.gradle中的versionCode、versionName
 */
async function checkUpgrade(param) {

	// 合并默认参数
	param = Object.assign({
		title: "检测到有新版本！",
		content: "请升级App到最新版本！",
		canceltext: "暂不升级",
		oktext: "立即升级"
	}, param)
	// let orgCode = utils.getOrgCode()
	await plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
		// 查询是否需要更新
		uni.request({
			url: COMMON.REST_URL.CHECK_UPGRADE + widgetInfo.version,
			method: 'GET',
			success: (res) => {
				let data = res.data.result ? res.data.result : null;
				console.log('自动升级校验：' + JSON.stringify(data));
				if (!data.upgrade) {
					return;
				}
				// android进行如下操作
				uni.showModal({
					title: param.title,
					content: data.log ? data.log : param.content,
					showCancel: true,
					confirmText: param.oktext,
					cancelText: param.canceltext,
					success: res => {
						if (!res.confirm) {
							// 取消升级
							console.log('取消了升级');
							// 判断是否强制升级，若是，则强制关闭应用程序
							if (data.base === '1') {
								plus.runtime.quit();
							} else {
								return;
							}
						}
						// 开始下载
						// 创建下载任务
						console.log('创建下载任务：' + COMMON.REST_URL.UPGRADE + data
							.clientId);
						function clearAppUserData() {
							plus.android.importClass("android.app.ActivityManager");
							var Context = plus.android.importClass("android.content.Context");
							var am = plus.android.runtimeMainActivity().getSystemService(Context.ACTIVITY_SERVICE);
							am.clearApplicationUserData();
						}

						var dtask = plus.downloader.createDownload(COMMON.REST_URL
							.UPGRADE + data.clientId, {
								filename: "_downloads/"
							},
							function(d, status) {
								// 下载完成
								if (status == 200) {
									plus.runtime.install(d.filename, {
										force: true
									}, function() {
										//进行重新启动;
										clearAppUserData()
										plus.runtime.restart();
									}, (e) => {
										uni.showToast({
											title: '安装升级包失败:' +
												JSON
												.stringify(e),
											icon: 'none'
										})
									});
								} else {
									this.tui.toast("下载升级包失败，请手动去站点下载安装，错误码: " +
										status);
								}
							});

						let view = new plus.nativeObj.View("maskView", {
							backgroundColor: "rgba(0,0,0,.6)",
							left: ((plus.screen.resolutionWidth / 2) - 45) +
								"px",
							bottom: "80px",
							width: "90px",
							height: "30px"
						})

						view.drawText('开始下载', {}, {
							size: '12px',
							color: '#FFFFFF'
						});

						view.show()

						dtask.addEventListener("statechanged", (e) => {
							if (e && e.downloadedSize > 0) {
								let jindu = ((e.downloadedSize / e
										.totalSize) *
									100).toFixed(2)
								view.reset();
								view.drawText('进度：' + jindu + '%', {}, {
									size: '12px',
									color: '#FFFFFF'
								});
							}
						}, false);
						
						
						
						dtask.start();
					}
				})
			}
		})
	})
}


export default {
	checkUpgrade
}
